iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0
Mobile Development

Android與Spring Boot開發學習之旅系列 第 19

開發學習之旅 Day19 - 全局異常處理

  • 分享至 

  • xImage
  •  

GlobalExceptionHandler 用於讓開發者可以集中處理整個應用程序中的異常情況,提供一致性的錯誤處理機制,並且提高代碼的可維護性和可讀性,同時減少重複的代碼。

  • @ControllerAdvice
    • 表示此類別作為全局異常處理器。
    • 用於捕獲和處理整個應用程序中的異常,而不單單只是在單個控制器或服務中。
  • @ExceptionHandler
    • 定義該方法將處理的異常類型。
    • 當一個控制器方法拋出一個異常,根據 @ExceptionHandler 的定義來查找相應的處理方法。

建立全局異常處理器

這個範例是透過HttpStatus.INTERNAL_SERVER_ERROR 將HTTP狀態碼設定為500。

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    public ResponseEntity<String> handleException(Exception e) {
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error: " + e.getMessage());
    }
}

使用@ExceptionHandler來處理Exception類型的異常,可以根據不同類型的需求添加更多的@ExceptionHandler方法。

在控制器類別測試異常

@RestController
@RequestMapping("/example")
public class ExampleController {

    @GetMapping("/tryException")
    public void tryrException() {
        throw new RuntimeException("exception");
    }
}

當訪問/example/tryException時,將由GlobalExceptionHandler處理,該處理程序將會返回含錯誤消息狀態碼為500的HTTP響應。


上一篇
開發學習之旅 Day18 - 實現登入和註冊功能
下一篇
開發學習之旅 Day20 - 記帳應用API:支出資料請求
系列文
Android與Spring Boot開發學習之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言